package _74

/*
时间复杂度：O(NM) N为bank的长度，M为字符串长度
空间复杂度：O(1)

用一个pre来记录前一次有设备的一排的总设备数量,初试化为0，则如果只有一排有设备总激光束为0
*/

func numberOfBeams(bank []string) int {
	pre := 0
	ans := 0
	for _, row := range bank {
		cnt := 0
		for _, ch := range row {
			if ch == '1' {
				cnt++
			}
		}
		if cnt > 0 {
			ans += pre * cnt
			pre = cnt
		}
	}
	return ans
}

/*
时间复杂度：O(NM) N为bank的长度，M为字符串长度
空间复杂度：O(N)

*/

func numberOfBeams1(bank []string) int {
	arr := make([]int, 0)
	for _, s := range bank {
		count := countOne(s)
		if count > 0 {
			arr = append(arr, count)
		}
	}
	ans := 0
	for i := 1; i < len(arr); i++ {
		ans += arr[i] * arr[i-1]
	}
	return ans
}

func countOne(s string) int {
	ans := 0
	for i := range s {
		if s[i] == '1' {
			ans++
		}
	}
	return ans
}
